package com.warm.base.design.b_state;

/**
 * @Date: 2019/11/27 14:45
 * @Author: LChuang
 * @Description: 状态模式(行为型)
 *
 *      允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
 */
public class Client {

    /**
     * Context 上下文环境：它定义了客户程序需要的接口并维护一个具体状态角色的实例，将与状态相关的操作委托给当前的Concrete State对象来处理。
     * State 抽象状态：定义一个接口以封装使用上下文环境的的一个特定状态相关的行为。
     * Concrete State 具体状态：实现抽象状态定义的接口。
     */
    /**
     * 主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。
     * 把状态的判断逻辑转移到表示不同状态的一系列类中，可以把复杂的判断逻辑简化。
     */
    public static void main(String[] args) {
        State stateA = new ConcreteStateA();
        Context context = new Context(stateA);
        context.request();
    }

}
